package com.server.store.data;

import java.util.ArrayList;
import java.util.List;

import com.google.appengine.api.datastore.EntityNotFoundException;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;
import com.googlecode.objectify.Query;
import com.shared.model.Apporteur;
import com.shared.model.Assure;
import com.shared.model.Interlocuteur;
import com.shared.model.Produit;
import com.shared.model.Proposition;
import com.shared.utilitaire.Adresse;
import com.shared.utilitaire.Date;
/**
 * DAO de gestion des {@link Assure}
 * @author queyroi
 *
 */
public class AssureManager extends DataManager<Assure> {

	static{
		ObjectifyService.register(Interlocuteur.class);
		ObjectifyService.register(Adresse.class);
		ObjectifyService.register(Apporteur.class);
		ObjectifyService.register(Date.class);
		ObjectifyService.register(Assure.class);
		ObjectifyService.register(Proposition.class);
		ObjectifyService.register(Produit.class);
	}

	
	@Override
	public List<Assure> getList() {
		List<Assure> listReturn = new ArrayList<Assure>();
		Objectify ofy = ObjectifyService.begin();
		Query<Assure> query = ofy.query(Assure.class);
		for(Assure a : query){
			listReturn.add(a);
		}
		return listReturn;
	}

	public Interlocuteur getGestionnaire(Assure obj) throws EntityNotFoundException{
		Objectify ofy = ObjectifyService.begin();
		return ofy.get(Interlocuteur.class, obj.getKeyGestionnaire().getId());
	}

	public Apporteur getApporteur(Assure obj) throws EntityNotFoundException{
		Objectify ofy = ObjectifyService.begin();
		return ofy.get(Apporteur.class, obj.getKeyApporteur().getId());
	}
	
	public Apporteur getSousApporteur(Assure obj) throws EntityNotFoundException{
		Objectify ofy = ObjectifyService.begin();
		return ofy.get(Apporteur.class, obj.getKeySousApporteur().getId());
	}
	
	public List<Proposition> getListProposition(Assure obj) throws EntityNotFoundException{		
		Objectify ofy = ObjectifyService.begin();
		List<Proposition> listRetour = new ArrayList<Proposition>();		
		for(Key<Proposition> kProp : obj.getListKeyProposition()){				
			listRetour.add(ofy.get(Proposition.class, kProp.getId()));			
		}		
		return listRetour;
	}
}

